////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  imagesensormodulesetmanager.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#include "parametersetmanager.h"
#include "parametermodule.h"
#include "parametertypes.h"
#include "camxactuatordriver.h"
#include "camxpdafconfig.h"
#include "camxmoduleconfig.h"
#include "camxsensordriver.h"
#include "camxflashdriver.h"
#include "camxoisdriver.h"
#include "camxeepromdriver.h"

#define IMAGESENSORMODULE_DEFAULT_MODULE_COUNT 7
#ifndef IMAGESENSORMODULESETMANAGER_H
#define IMAGESENSORMODULESETMANAGER_H

#include <iostream>
#include <unordered_map>

class ImageSensorModuleSetManager : public ParameterSetManager
{
public:
    ImageSensorModuleSetManager();
    virtual ~ImageSensorModuleSetManager()
    {
        for (UINT32 i = 0; i < IMAGESENSORMODULE_DEFAULT_MODULE_COUNT; i++)
        {
            PARAMETER_DELETE m_defaultModules[i];
        }
    }

    CamX::ActuatorDriverData* GetModule_actuatorDriver(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::PDAFConfigurationData* GetModule_PDConfigData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::CameraModuleData* GetModule_cameraModuleData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::SensorDriverData* GetModule_sensorDriverData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::FlashDriverData* GetModule_flashDriverData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::OISDriverData* GetModule_OISDriver(
        TuningMode* modeBranch,
        UINT32 modeCount);

    CamX::EEPROMDriverData* GetModule_EEPROMDriverData(
        TuningMode* modeBranch,
        UINT32 modeCount);


protected:
    virtual const ParameterModule* GetDefaultModule(
        char* type)
    {
        const ParameterModule* module = (const ParameterModule*)m_moduleMap[type];

        return module;
    }

    const ParameterModule* m_defaultModules[IMAGESENSORMODULE_DEFAULT_MODULE_COUNT];
    std::unordered_map<std::string, void*> m_moduleMap;
};

#endif

